/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.unicon.autoservicio.view.bean;

import com.unicon.autoservicio.dao.CreditosDAO;
import com.unicon.autoservicio.util.FacesUtils;
import com.unicon.sdc.ds.ws.ClienteAutoservicioBean;
import com.unicon.sdc.ds.ws.EstadisticoCreditoBean;
import java.text.DecimalFormat;
import java.text.DecimalFormatSymbols;
import java.text.NumberFormat;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;
import javax.faces.event.PhaseId;

/**
 *
 * @author jcabrera
 */
public class ConsultaEstadoDeCreditoBean extends BaseManageBean {

    private String exportarEstadoCredito;
    private Double lineaCredito;
    private Double deudaTotalB;
    private Double deudaPorFacturar;
    private Double deudaTotalD;
    private Double saldoAdelantado;
    private Double saldoPorEntregar;
    private Double saldoFacturaAdelantada;
    private Double saldoTotal;
    private Double sobregiro;
    private String lineaCreditoStr;
    private String deudaTotalBStr;
    private String deudaPorFacturarStr;
    private String deudaTotalDStr;
    private String saldoAdelantadoStr;
    private String saldoPorEntregarStr;
    private String saldoFacturaAdelantadaStr;
    private String saldoTotalStr;
    private String sobregiroStr;
    private String mensajeEstadoDeCredito;
    private Boolean flSobregiro=false;

    public ConsultaEstadoDeCreditoBean() {
        exportarEstadoCredito = "";
        inicializarTotales();
        mensajeEstadoDeCredito="";
    }

    public String getExportarEstadoCredito() {
        FacesContext fc = FacesContext.getCurrentInstance();
        UsuarioBean usuarioBean = getSessionUser();
        return fc.getExternalContext().getRequestContextPath() + "/ExportarPDF?reporte=ExportarReporteEstadoDeCredito&codigoCliente=" + usuarioBean.getCodigoCliente();
    }

    /**
     * @param exportarEstadoCredito the exportarEstadoCredito to set
     */
    public void setExportarEstadoCredito(String exportarEstadoCredito) {
        this.exportarEstadoCredito = exportarEstadoCredito;
    }

    public boolean btnBuscarActionPerformed(ActionEvent event) {
        inicializarTotales();
        if (!event.getPhaseId().equals(PhaseId.INVOKE_APPLICATION)) {
            event.setPhaseId(PhaseId.INVOKE_APPLICATION);
            event.queue();
            return true;
        }

        UsuarioBean usuarioBean = getSessionUser();

        CreditosDAO creditoDao = new CreditosDAO();
        ClienteAutoservicioBean cliente = creditoDao.obtenerInformacionCliente(usuarioBean.getCodigoCliente(), usuarioBean.getUsuario(), usuarioBean.getClave());
        EstadisticoCreditoBean estaditico = creditoDao.obtenerResumenEstadoDeCredito(usuarioBean.getCodigoCliente(), usuarioBean.getUsuario(), usuarioBean.getClave());
      
       
     
        lineaCredito = cliente.getLineaDeCredito();
         
        if(lineaCredito>0){
        deudaTotalB = Double.parseDouble(estaditico.getPorVencer())+Double.parseDouble(estaditico.getVencida());
        deudaPorFacturar = Double.parseDouble(estaditico.getPorFacturar());
        deudaTotalD =deudaPorFacturar+deudaTotalB;
        saldoAdelantado = Double.parseDouble(estaditico.getSaldoAdelantoValorizaciones());
        saldoPorEntregar = Double.parseDouble(estaditico.getSaldoPorEntregar());
        saldoFacturaAdelantada =Double.parseDouble(estaditico.getSaldoFacturaAdelantada());
        saldoTotal = saldoAdelantado+saldoPorEntregar+saldoFacturaAdelantada;
        sobregiro = lineaCredito+saldoPorEntregar-deudaTotalD;
        formatNumbers();
        }else{
            mensajeEstadoDeCredito=FacesUtils.getMessageResourceString("msg.reporteEstadoDeCredito.sinLienaDeCredito");
        }
      
        return true;
    }
    
    
      public void inicializarTotales(){
         lineaCredito = 0.0;
        deudaTotalB =  0.0;
        deudaPorFacturar = 0.0;
        deudaTotalD = 0.0;
        saldoAdelantado =  0.0;
        saldoPorEntregar = 0.0;
        saldoFacturaAdelantada = 0.0;
        saldoTotal =  0.0;
        sobregiro =  0.0;
        
        lineaCreditoStr =lineaCredito.toString();
        deudaTotalBStr =  deudaTotalB.toString();
        deudaPorFacturarStr = deudaPorFacturar.toString();
        deudaTotalDStr = deudaTotalD.toString();
        saldoAdelantadoStr =  saldoAdelantado.toString();
        saldoPorEntregarStr =saldoPorEntregar.toString();
        saldoFacturaAdelantadaStr = saldoFacturaAdelantada.toString();
        saldoTotalStr =  saldoTotal.toString();
        sobregiroStr= sobregiro.toString();
    }
      
         public void formatNumbers(){
             
       DecimalFormatSymbols simbolo = new DecimalFormatSymbols();
        simbolo.setDecimalSeparator('.');
        simbolo.setGroupingSeparator(',');
        NumberFormat formatter;
        formatter = new DecimalFormat("#,###.00", simbolo);
        
  
        
        lineaCreditoStr =formatter.format(lineaCredito);
        deudaTotalBStr  = formatter.format(deudaTotalB);
        deudaPorFacturarStr  = formatter.format(deudaPorFacturar);
        deudaTotalDStr  = formatter.format(deudaTotalD);
        saldoAdelantadoStr  =  formatter.format(saldoAdelantado);
        saldoPorEntregarStr  =formatter.format(saldoPorEntregar);
        saldoFacturaAdelantadaStr  = formatter.format(saldoFacturaAdelantada);
        saldoTotalStr  =  formatter.format(saldoTotal);
        sobregiroStr  =formatter.format(sobregiro);
    }


      
       
    /**
     * @return the lineaCredito
     */
    public Double getLineaCredito() {
        return lineaCredito;
    }

    /**
     * @param lineaCredito the lineaCredito to set
     */
    public void setLineaCredito(Double lineaCredito) {
        this.lineaCredito = lineaCredito;
    }

    /**
     * @return the deudaTotalB
     */
    public Double getDeudaTotalB() {
        return deudaTotalB;
    }

    /**
     * @param deudaTotalB the deudaTotalB to set
     */
    public void setDeudaTotalB(Double deudaTotalB) {
        this.deudaTotalB = deudaTotalB;
    }

    /**
     * @return the deudaPorFacturar
     */
    public Double getDeudaPorFacturar() {
        return deudaPorFacturar;
    }

    /**
     * @param deudaPorFacturar the deudaPorFacturar to set
     */
    public void setDeudaPorFacturar(Double deudaPorFacturar) {
        this.deudaPorFacturar = deudaPorFacturar;
    }

    /**
     * @return the deudaTotalD
     */
    public Double getDeudaTotalD() {
        return deudaTotalD;
    }

    /**
     * @param deudaTotalD the deudaTotalD to set
     */
    public void setDeudaTotalD(Double deudaTotalD) {
        this.deudaTotalD = deudaTotalD;
    }

    /**
     * @return the saldoAdelantado
     */
    public Double getSaldoAdelantado() {
        return saldoAdelantado;
    }

    /**
     * @param saldoAdelantado the saldoAdelantado to set
     */
    public void setSaldoAdelantado(Double saldoAdelantado) {
        this.saldoAdelantado = saldoAdelantado;
    }

    /**
     * @return the saldoPorEntregar
     */
    public Double getSaldoPorEntregar() {
        return saldoPorEntregar;
    }

    /**
     * @param saldoPorEntregar the saldoPorEntregar to set
     */
    public void setSaldoPorEntregar(Double saldoPorEntregar) {
        this.saldoPorEntregar = saldoPorEntregar;
    }

    /**
     * @return the saldoFacturaAdelantada
     */
    public Double getSaldoFacturaAdelantada() {
        return saldoFacturaAdelantada;
    }

    /**
     * @param saldoFacturaAdelantada the saldoFacturaAdelantada to set
     */
    public void setSaldoFacturaAdelantada(Double saldoFacturaAdelantada) {
        this.saldoFacturaAdelantada = saldoFacturaAdelantada;
    }

    /**
     * @return the saldoTotal
     */
    public Double getSaldoTotal() {
        return saldoTotal;
    }

    /**
     * @param saldoTotal the saldoTotal to set
     */
    public void setSaldoTotal(Double saldoTotal) {
        this.saldoTotal = saldoTotal;
    }

    /**
     * @return the sobregiro
     */
    public Double getSobregiro() {
        return sobregiro;
    }

    /**
     * @param sobregiro the sobregiro to set
     */
    public void setSobregiro(Double sobregiro) {
        this.sobregiro = sobregiro;
    }

    /**
     * @return the mensajeEstadoDeCredito
     */
    public String getMensajeEstadoDeCredito() {
        return mensajeEstadoDeCredito;
    }

    /**
     * @param mensajeEstadoDeCredito the mensajeEstadoDeCredito to set
     */
    public void setMensajeEstadoDeCredito(String mensajeEstadoDeCredito) {
        this.mensajeEstadoDeCredito = mensajeEstadoDeCredito;
    }

    /**
     * @return the lineaCreditoStr
     */
    public String getLineaCreditoStr() {
        return lineaCreditoStr;
    }

    /**
     * @param lineaCreditoStr the lineaCreditoStr to set
     */
    public void setLineaCreditoStr(String lineaCreditoStr) {
        this.lineaCreditoStr = lineaCreditoStr;
    }

    /**
     * @return the deudaTotalBStr
     */
    public String getDeudaTotalBStr() {
        return deudaTotalBStr;
    }

    /**
     * @param deudaTotalBStr the deudaTotalBStr to set
     */
    public void setDeudaTotalBStr(String deudaTotalBStr) {
        this.deudaTotalBStr = deudaTotalBStr;
    }

    /**
     * @return the deudaPorFacturarStr
     */
    public String getDeudaPorFacturarStr() {
        return deudaPorFacturarStr;
    }

    /**
     * @param deudaPorFacturarStr the deudaPorFacturarStr to set
     */
    public void setDeudaPorFacturarStr(String deudaPorFacturarStr) {
        this.deudaPorFacturarStr = deudaPorFacturarStr;
    }

    /**
     * @return the deudaTotalDStr
     */
    public String getDeudaTotalDStr() {
        return deudaTotalDStr;
    }

    /**
     * @param deudaTotalDStr the deudaTotalDStr to set
     */
    public void setDeudaTotalDStr(String deudaTotalDStr) {
        this.deudaTotalDStr = deudaTotalDStr;
    }

    /**
     * @return the saldoAdelantadoStr
     */
    public String getSaldoAdelantadoStr() {
        return saldoAdelantadoStr;
    }

    /**
     * @param saldoAdelantadoStr the saldoAdelantadoStr to set
     */
    public void setSaldoAdelantadoStr(String saldoAdelantadoStr) {
        this.saldoAdelantadoStr = saldoAdelantadoStr;
    }

    /**
     * @return the saldoPorEntregarStr
     */
    public String getSaldoPorEntregarStr() {
        return saldoPorEntregarStr;
    }

    /**
     * @param saldoPorEntregarStr the saldoPorEntregarStr to set
     */
    public void setSaldoPorEntregarStr(String saldoPorEntregarStr) {
        this.saldoPorEntregarStr = saldoPorEntregarStr;
    }

    /**
     * @return the saldoFacturaAdelantadaStr
     */
    public String getSaldoFacturaAdelantadaStr() {
        return saldoFacturaAdelantadaStr;
    }

    /**
     * @param saldoFacturaAdelantadaStr the saldoFacturaAdelantadaStr to set
     */
    public void setSaldoFacturaAdelantadaStr(String saldoFacturaAdelantadaStr) {
        this.saldoFacturaAdelantadaStr = saldoFacturaAdelantadaStr;
    }

    /**
     * @return the saldoTotalStr
     */
    public String getSaldoTotalStr() {
        return saldoTotalStr;
    }

    /**
     * @param saldoTotalStr the saldoTotalStr to set
     */
    public void setSaldoTotalStr(String saldoTotalStr) {
        this.saldoTotalStr = saldoTotalStr;
    }

    /**
     * @return the sobregiroStr
     */
    public String getSobregiroStr() {
        return sobregiroStr;
    }

    /**
     * @param sobregiroStr the sobregiroStr to set
     */
    public void setSobregiroStr(String sobregiroStr) {
        this.sobregiroStr = sobregiroStr;
    }

    /**
     * @return the flSobregiro
     */
    public Boolean getFlSobregiro() {
        
        if(sobregiro>0){
        return Boolean.FALSE;
        }else{
        return Boolean.TRUE;
        }
        
     
    }

    /**
     * @param flSobregiro the flSobregiro to set
     */
    public void setFlSobregiro(Boolean flSobregiro) {
        this.flSobregiro = flSobregiro;
    }
}
